package com.easy.util;

import cn.hutool.captcha.LineCaptcha;
import cn.hutool.core.codec.Base64;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public class CaptchaUtil {
    // 用于存储验证码的过期Map（8分钟有效期）
    private static final ExpiryMap expiryMap = new ExpiryMap();
    private static final long EXPIRY_TIME = 1000 * 60 * 8; // 8分钟

    /**
     * 生成验证码
     * @return 包含key和图片base64的Map
     */
    public static Map<String, String> getCaptcha() {
        // 创建图形验证码（宽200，高100，4位字符，7条干扰线）
        LineCaptcha lineCaptcha = cn.hutool.captcha.CaptchaUtil.createLineCaptcha(200, 100, 4, 7);

        // 获取图片的base64编码
        String imgBase64 = Base64.encode(lineCaptcha.getImageBytes());
        // 获取验证码文本
        String code = lineCaptcha.getCode();
        // 生成唯一key
        String key = UUID.randomUUID().toString();

        // 存储验证码（8分钟有效期）
        expiryMap.put(key, code, EXPIRY_TIME);
        System.out.println("Generated CAPTCHA: " + code);

        // 返回结果
        Map map = Map.of("key", key, "base","data:image/png;base64,"+ imgBase64);
        return map;
    }

    /**
     * 验证验证码
     * @param key 验证码唯一标识
     * @param code 用户输入的验证码
     * @return 验证成功返回true，否则返回false
     */
    // 验证码检查
    public static boolean checkCaptcha(String key, String code) {
        String captchaCode = (String) expiryMap.get(key);
        return code.equalsIgnoreCase(captchaCode);// 比较并忽略大小写
    }


}
